/*
	在使用了bodyParser中间件后，代表客户端请求的http.IncomingMessage对象就具有了一个body属性，该属性值为一个对象，
	包含了客户端HTML页面所有被提交的表单控件中的内容
*/

var express = require('express');
var fs = require('fs');
var util = require('util');
var app = express();
var mysql = require('mysql');

app.use(express.bodyParser());
app.use(express.methodOverride("xuxuan"));

// 在methodOverride函数中，可使用一个字符串参数来修改客户端表单中用于实现伪HTTP方法的隐藏控件的name属性值
// <input type="hidden" name="test" value="put">
// app.use(express.methodOverride('test'));



var pool = mysql.createPool({
	host: 'localhost',
	port: 3306,
	database: 'test',
	user: 'root',
	password: '123456'
});


app.get('/index.html', function(req, res) {
	res.sendfile(__dirname + "/methodOverride_index.html");
});


// app.post('/index.html', function(req, res) {
// 把post改为put，由于服务器没有监听客户端提交的post请求，触发一个错误
// 在html加上<input type="hidden" name="_method" value="put">
// 在本js加上app.use(express.bodyParser());
app.put('/index.html', function(req, res) {

	// 真实使用的提交方法
	console.log(req.originalMethod);

	pool.getConnection(function(err, connection) {
		if (err)
			res.send("连接失败");
		else {
			console.log(req.body);
			/*
				{ name: '璇xx', sex: 'F' }
			*/
			var str = "";
			connection.query('insert into mytable set ?', {
					name: req.body.name,
					sex: req.body.sex
				},
				function(err, result) {
					if (err)
						str = "插入数据失败";
					else
						str = "插入数据成功";
					connection.release();
					res.send(str);
				});
		}
	});
});

app.listen(1337, 'localhost');